/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package entidades;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author BATAQUERO
 */
@Entity
@Table(name = "seguimiento_bitacora_semanal")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "SeguimientoBitacoraSemanal.findAll", query = "SELECT s FROM SeguimientoBitacoraSemanal s"),
    @NamedQuery(name = "SeguimientoBitacoraSemanal.findByIdBitacoraSemanal", query = "SELECT s FROM SeguimientoBitacoraSemanal s WHERE s.idBitacoraSemanal = :idBitacoraSemanal"),
    @NamedQuery(name = "SeguimientoBitacoraSemanal.findByFechaInicial", query = "SELECT s FROM SeguimientoBitacoraSemanal s WHERE s.fechaInicial = :fechaInicial"),
    @NamedQuery(name = "SeguimientoBitacoraSemanal.findByFechaFinal", query = "SELECT s FROM SeguimientoBitacoraSemanal s WHERE s.fechaFinal = :fechaFinal"),
    @NamedQuery(name = "SeguimientoBitacoraSemanal.findByAceptacionPracticante", query = "SELECT s FROM SeguimientoBitacoraSemanal s WHERE s.aceptacionPracticante = :aceptacionPracticante"),
    @NamedQuery(name = "SeguimientoBitacoraSemanal.findByAceptacionSupervisorUniv", query = "SELECT s FROM SeguimientoBitacoraSemanal s WHERE s.aceptacionSupervisorUniv = :aceptacionSupervisorUniv"),
    @NamedQuery(name = "SeguimientoBitacoraSemanal.findByMaxId", query = "SELECT max(s.idBitacoraSemanal) FROM SeguimientoBitacoraSemanal s"),
    @NamedQuery(name = "SeguimientoBitacoraSemanal.findByConvenioEdicionFormato", query = "SELECT s FROM SeguimientoBitacoraSemanal s WHERE s.convenioXPeriodoXEstudiante = :convenioXPeriodoXEstudiante AND s.edicionFormato = :edicionFormato")})
public class SeguimientoBitacoraSemanal implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @NotNull
    @Column(name = "idBitacoraSemanal")
    private Integer idBitacoraSemanal;
    @Basic(optional = false)
    @NotNull
    @Column(name = "fechaInicial")
    @Temporal(TemporalType.DATE)
    private Date fechaInicial;
    @Basic(optional = false)
    @NotNull
    @Column(name = "fechaFinal")
    @Temporal(TemporalType.DATE)
    private Date fechaFinal;
    @Size(max = 12)
    @Column(name = "aceptacionPracticante")
    private String aceptacionPracticante;
    @Size(max = 12)
    @Column(name = "aceptacionSupervisorUniv")
    private String aceptacionSupervisorUniv;
    @Size(max = 50)
    @Column(name = "proyecto")
    private String proyecto;
    @Size(max = 50)
    @Column(name = "empresa")
    private String empresa;
    @Basic(optional = false)
    @NotNull
    @Column(name = "edicionFormato")
    private boolean edicionFormato;
    @JoinColumns({
        @JoinColumn(name = "idConvenioPeriodo", referencedColumnName = "idConvenioPeriodo"),
        @JoinColumn(name = "idEstudiante", referencedColumnName = "idEstudiante")})
    @ManyToOne(optional = false)
    private ConvenioXPeriodoXEstudiante convenioXPeriodoXEstudiante;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idBitacoraSemanal")
    private List<DetalleBitacoraSemanal> detalleBitacoraSemanalList;

    public SeguimientoBitacoraSemanal() {
    }

    public SeguimientoBitacoraSemanal(Integer idBitacoraSemanal) {
        this.idBitacoraSemanal = idBitacoraSemanal;
    }

    public SeguimientoBitacoraSemanal(Integer idBitacoraSemanal, Date fechaInicial, Date fechaFinal) {
        this.idBitacoraSemanal = idBitacoraSemanal;
        this.fechaInicial = fechaInicial;
        this.fechaFinal = fechaFinal;
    }

    public Integer getIdBitacoraSemanal() {
        return idBitacoraSemanal;
    }

    public void setIdBitacoraSemanal(Integer idBitacoraSemanal) {
        this.idBitacoraSemanal = idBitacoraSemanal;
    }

    public Date getFechaInicial() {
        return fechaInicial;
    }

    public void setFechaInicial(Date fechaInicial) {
        this.fechaInicial = fechaInicial;
    }

    public Date getFechaFinal() {
        return fechaFinal;
    }

    public void setFechaFinal(Date fechaFinal) {
        this.fechaFinal = fechaFinal;
    }

    public String getAceptacionPracticante() {
        return aceptacionPracticante;
    }

    public void setAceptacionPracticante(String aceptacionPracticante) {
        this.aceptacionPracticante = aceptacionPracticante;
    }

    public String getAceptacionSupervisorUniv() {
        return aceptacionSupervisorUniv;
    }

    public void setAceptacionSupervisorUniv(String aceptacionSupervisorUniv) {
        this.aceptacionSupervisorUniv = aceptacionSupervisorUniv;
    }

    public ConvenioXPeriodoXEstudiante getConvenioXPeriodoXEstudiante() {
        return convenioXPeriodoXEstudiante;
    }

    public void setConvenioXPeriodoXEstudiante(ConvenioXPeriodoXEstudiante convenioXPeriodoXEstudiante) {
        this.convenioXPeriodoXEstudiante = convenioXPeriodoXEstudiante;
    }

    @XmlTransient
    public List<DetalleBitacoraSemanal> getDetalleBitacoraSemanalList() {
        return detalleBitacoraSemanalList;
    }

    public void setDetalleBitacoraSemanalList(List<DetalleBitacoraSemanal> detalleBitacoraSemanalList) {
        this.detalleBitacoraSemanalList = detalleBitacoraSemanalList;
    }

    public String getProyecto() {
        return proyecto;
    }

    public void setProyecto(String proyecto) {
        this.proyecto = proyecto;
    }

    public String getEmpresa() {
        return empresa;
    }

    public void setEmpresa(String empresa) {
        this.empresa = empresa;
    }

    public boolean isEdicionFormato() {
        return edicionFormato;
    }

    public void setEdicionFormato(boolean edicionFormato) {
        this.edicionFormato = edicionFormato;
    }
    

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idBitacoraSemanal != null ? idBitacoraSemanal.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof SeguimientoBitacoraSemanal)) {
            return false;
        }
        SeguimientoBitacoraSemanal other = (SeguimientoBitacoraSemanal) object;
        if ((this.idBitacoraSemanal == null && other.idBitacoraSemanal != null) || (this.idBitacoraSemanal != null && !this.idBitacoraSemanal.equals(other.idBitacoraSemanal))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "entidades.SeguimientoBitacoraSemanal[ idBitacoraSemanal=" + idBitacoraSemanal + " ]";
    }
    
}
